\section{约束 Constraints}\label{constraints}

\subsection{约束项的使用}

\texttt{constraints}
模块的函数允许在优化期间对网络参数设置约束（例如非负性）。

约束是以层为对象进行的。具体的 API 因层而异，但
\texttt{Dense}，\texttt{Conv1D}，\texttt{Conv2D} 和 \texttt{Conv3D}
这些层具有统一的 API。

约束层开放 2 个关键字参数：

\begin{itemize}
\tightlist
\item
  \texttt{kernel\_constraint} 用于主权重矩阵。
\item
  \texttt{bias\_constraint} 用于偏置。
\end{itemize}

\begin{Shaded}
\begin{Highlighting}[]
\ImportTok{from}\NormalTok{ keras.constraints }\ImportTok{import}\NormalTok{ max_norm}
\NormalTok{model.add(Dense(}\DecValTok{64}\NormalTok{, kernel_constraint}\OperatorTok{=}\NormalTok{max_norm(}\FloatTok{2.}\NormalTok{)))}
\end{Highlighting}
\end{Shaded}

\subsection{可用的约束}

\begin{itemize}
\tightlist
\item
  \textbf{max\_norm(max\_value=2, axis=0)}: 最大范数约束
\item
  \textbf{non\_neg()}: 非负性约束
\item
  \textbf{unit\_norm(axis=0)}: 单位范数约束
\item
  \textbf{min\_max\_norm(min\_value=0.0, max\_value=1.0, rate=1.0,
  axis=0)}: 最小/最大范数约束
\end{itemize}
\newpage
